﻿using System;
using System.Windows.Forms;
using clasesBase;
using Logica;
using System.Data;
using System.Collections.Generic;

namespace PlanificacionProduccion
{
    public partial class FrmPrincipal : Form
    {
        Usuario usuarioSistema = new Usuario();

        public FrmPrincipal()
        {
            InitializeComponent();
        }

        private void FrmPrincipal_Load(object sender, EventArgs e)
        {
            this.Text += " :::: Conectado como: " + Program.UsuarioActual.Trim().ToUpper();
            
            /* El menú se muestra de acuerdo a los permisos del usuario, según su rol. Los permisos se almacenan en la BD y se acceden
             * por FORMULARIO. */
            string nombreItemMenu = "", nombreGrupoMenu = "";
            ToolStripItemCollection itemsMenu = MenuPrincipal.Items; // Obtiene los ítems de menú principales (los grupos)
            foreach (DataRow fila in Program.PermisosPorRol.Rows)
            {
                // Formulario al que tiene permiso de acceso el usuario (y su correspondiente menú padre)
                nombreItemMenu = fila["nombreCodigo"].ToString().Trim();
                nombreGrupoMenu = fila["nombreMenu"].ToString().Trim();

                ToolStripItem[] elementos = itemsMenu.Find(nombreGrupoMenu, false); // Valido que se encuentre el menú padre
                if (elementos.Length > 0)
                {
                    ToolStripMenuItem item_grupo= (ToolStripMenuItem)elementos[0];
                    if (!item_grupo.Visible) item_grupo.Visible = true; // Si no está visible aún el menú padre, lo hago visible
                    ToolStripItem[] sub_opciones = item_grupo.DropDownItems.Find(nombreItemMenu, true); // Busco el acceso al formulario y lo hago visible
                    if (sub_opciones.Length > 0) sub_opciones[0].Visible = true;
                }
            }

        }

        private void smUnidades_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmUnidadesMedidaBusq>(this);
        }

        private void mSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void smMateriasPrimas_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmMateriaPrimaBusq>(this);
        }

        private void productosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmProductosBusq>(this);
        }

        private void smRoles_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmRolesBusq>(this);
        }

        private void smFormulas_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmFormulasBusq>(this);
        }

        private void permisosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmPermisoBusq>(this);
        }

        private void smUsuarios_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmUsuarioBusq>(this);
        }

        private void característicasPorLoteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmCaractLoteBusq>(this);
        }

        private void smFases_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmFasesBusq>(this);
        }

        private void smPlanificacion_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmPlanificacionBusq>(this);
        }

        private void smEstadosPlan_Click(object sender, EventArgs e)
        {
            FormsUnicos.abrirFormulario<FrmEstdoPlanifBusq>(this);
        }

        private void FrmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (Notificador.accionCerrarConfirmada())
            {
                if (FormsUnicos.MTipoFormColeccion.Count > 0) { 
                    Notificador.formulariosAbiertos();
                    e.Cancel = true;
                }
            }
            else e.Cancel = true;
        }
    }
}
